#ifndef _CUDA_VOLUME_RENDERER_H
#define _CUDA_VOLUME_RENDERER_H

#include "../volumeEngineCore/volumeEngineCoreInterface.h"
#include "CudaDriverAPILauncher.h"
//#include "../common/volume/volumeManager.h"

class CUDAVolumeRenderer: public volumeEngineCoreInterface
{
public:
	//setup render buffer, create all shader prog, TF, 
	CUDAVolumeRenderer();
	~CUDAVolumeRenderer();
	void destroyObject();
	virtual bool InitEngine(int w, int h);
	virtual void Render();
	virtual void RenderToImage();	
	virtual void Resize(int w, int h) ;
	virtual void Refresh(); // reload shader etc.

	virtual void Init1DTF(int dataSize, int tableSize);
	virtual void Update1DTF(void* buffer);

	virtual void SetViewingParameters(parameterViewing &paraV); 
	virtual void SetShadingParameters(parameterShading &paraS);
	virtual bool LoadCoreStatusFromFile(const char* filename);
	virtual bool SaveCoreStatusToFile(const char* filename);

	virtual bool loadSingleVolume(const char* filename);

protected:
	bool initCUDA();

protected:
	CudaDriverAPILauncher _cudaLauncher;



	

};

#endif